/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.ifrr.gepro.projeto.handler;

import br.ifrr.gepro.estoria.bean.EstoriasBean;
import br.ifrr.gepro.estoria.dao.EstoriasDao;
import br.ifrr.gepro.pessoa.bean.TecnicoBean;
import br.ifrr.gepro.projeto.bean.EquipeBean;
import br.ifrr.gepro.projeto.dao.EquipeDao;
import br.ifrr.gepro.util.DAOException;
import br.ifrr.gepro.util.JsfUtil;
import br.ifrr.gepro.util.Navegacao;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.component.html.HtmlSelectOneMenu;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;

/**
 *
 * @author rafael
 */
@ManagedBean(name = "equipe")
@SessionScoped
public class EquipeMB {

    private EquipeBean novaequipe = new EquipeBean();
    private ArrayList<EquipeBean> listaEquipe = new ArrayList<EquipeBean>();
    private HtmlSelectOneMenu projetoSelecionado = new HtmlSelectOneMenu();
    private TecnicoBean[] tecnicos;

    public String preparaCadastro() {

        novaequipe = new EquipeBean();
        return Navegacao.paginaCadEquipe;
    }

    public String salvar() throws DAOException {
        
        if (novaequipe.getIdEquipe() == null) {
            new EquipeDao().inserir(getNovaequipe());
        } else {
            new EquipeDao().alterar(getNovaequipe());
            tecnicos = (TecnicoBean[]) novaequipe.getTecnicoBeanCollection().toArray();

        }
        JsfUtil.showMessageInfo("Cadastro realizado com sucesso!");
        return Navegacao.paginaTecEquipe;
    }

    public String editar() {
        return Navegacao.paginaAtuEquipe + "&acao=e";
    }

    public String salvarTecnicos() throws DAOException {
        novaequipe.setTecnicoBeanCollection(Arrays.asList(tecnicos));
        new EquipeDao().alterar(getNovaequipe());
        JsfUtil.showMessageInfo("Cadastro realizado com sucesso!");
        return Navegacao.paginaPrincipal;
    }

    public String visualizar() throws DAOException {
        int e = Integer.parseInt(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("idEquipe"));
        novaequipe = (EquipeBean) new EquipeDao().selecionar(e);
        return Navegacao.paginaAtuEquipe;
    }

    public String excluir() throws DAOException {
        int e = Integer.parseInt(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("idEquipe"));
        new EquipeDao().excluir(new EquipeBean(e));
        novaequipe = (EquipeBean) new EquipeDao().selecionar(e);

        JsfUtil.showMessageInfo("Operação realizada com sucesso!");
        return null;
    }

    /**
     * @return the novaequipe
     */
    public EquipeBean getNovaequipe() {
        return novaequipe;
    }

    /**
     * @param novaequipe the novaequipe to set
     */
    public void setNovaequipe(EquipeBean novaequipe) {
        this.novaequipe = novaequipe;
    }

    public ArrayList<EquipeBean> getListaEquipe() throws DAOException {
        listaEquipe = ((ArrayList<EquipeBean>) new EquipeDao().listar());
        return listaEquipe;
    }

    public void setListaEquipe(ArrayList<EquipeBean> listaEquipe) {
        this.listaEquipe = listaEquipe;
    }

    public HtmlSelectOneMenu getProjetoSelecionado() {
        return projetoSelecionado;
    }

    public void setProjetoSelecionado(HtmlSelectOneMenu projetoSelecionado) {
        this.projetoSelecionado = projetoSelecionado;
    }

    public List<EstoriasBean> getEstorias() throws DAOException {
        return new EstoriasDao().listar();
    }

    public List<SelectItem> getEstoriasCombo() throws DAOException {
        List<SelectItem> lista = new ArrayList<SelectItem>();
        for (EstoriasBean est : getEstorias()) {
            lista.add(new SelectItem(est.getIdEst(), est.getNome()));
        }
        return lista;
    }
    
    public List<EquipeBean> getEquipes() throws DAOException {
        return new EquipeDao().listar();
    }

    public List<SelectItem> getEquipesCombo() throws DAOException {
        List<SelectItem> lista = new ArrayList<SelectItem>();
        for (EquipeBean eq : getEquipes()) {
            lista.add(new SelectItem(eq.getIdEquipe(), eq.getNome()));
        }
        return lista;
    }

    public TecnicoBean[] getTecnicos() {
        return tecnicos;
    }

    public void setTecnicos(TecnicoBean[] tecnicos) {
        this.tecnicos = tecnicos;
    }
}
